package com.ly.cloud.service;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.ly.cloud.dto.UserDto;
import com.ly.cloud.entity.UserPo;
import com.ly.cloud.vo.UserVo;

/** 
 * Class Name: UserService  
 * Description: 
 * 用户查询服务接口
 * @author: WenboLi
 * @mail: wenboli@ly-sky.com 
 * @date: 2018年4月9日
 * @version: 1.0
 *
 */  
public interface UserService extends IService<UserPo> {

	/** 
	 * Method Name:  selectPage
	 * Description:  
	 * 分页查询用户列表
	 * @param page
	 * @param dto
	 * @return 
	 * @return Page<UserVo>	
	 * @exception 	
	 * @author WenboLi
	 * @mail WenboLi@ly-sky.com
	 * @date: 2018年4月9日
	 */
	Page<UserVo> selectPage(@Param("depId")Page<UserVo> page, @Param("dto")UserDto dto);
	
	/** 
	 * Method Name:  insert
	 * Description:  
	 * 插入用户数据
	 * @param user
	 * @return 
	 * @return boolean
	 * @exception 	
	 * @author WenboLi
	 * @mail WenboLi@ly-sky.com
	 * @date: 2018年4月9日
	 */
	boolean insert(UserDto user);
	
	/** 
	 * Method Name:  delete
	 * Description:  
	 * 根据编号删除用户数据
	 * @param userId
	 * @return 
	 * @return boolean
	 * @exception 	
	 * @author WenboLi
	 * @mail WenboLi@ly-sky.com
	 * @date: 2018年4月9日
	 */
	boolean delete(String userId);
	
	/** 
	 * Method Name:  get
	 * Description:  
	 * 根据编号获取用户数据
	 * @param userId
	 * @return 
	 * @return UserVo
	 * @exception 	
	 * @author WenboLi
	 * @mail WenboLi@ly-sky.com
	 * @date: 2018年4月9日
	 */
	UserPo get(String userId);

	/** 
	 * Method Name:  updateById
	 * Description:  
	 * 更新用户基本信息
	 * @param dto
	 * @return 
	 * @return boolean
	 * @exception 	
	 * @author WenboLi
	 * @mail WenboLi@ly-sky.com
	 * @date: 2018年8月20日
	 */
	boolean updateById(UserDto dto);

	/** 
	 * Method Name:  getUserBaseInfo
	 * Description:  
	 * 获取用户的基本信息
	 * @param id
	 * @return 
	 * @return UserVo
	 * @exception 	
	 * @author WenboLi
	 * @mail WenboLi@ly-sky.com
	 * @date: 2018年8月20日
	 */
	UserVo getUserBaseInfo(String id);

	/** 
	 * Method Name:  updatePasswordByUserId
	 * Description:  
	 * 根据用户编号修改用户密码
	 * @param userId
	 * @param password
	 * @return 
	 * @return boolean
	 * @exception 	
	 * @author WenboLi
	 * @mail WenboLi@ly-sky.com
	 * @date: 2018年8月20日
	 */
	boolean updatePasswordByUserId(String userId, String password);

	/** 
	 * Method Name:  updateUserPassword
	 * Description: 
	 * 当前用户修改密码 
	 * @param userId
	 * @param oldPassword
	 * @param newPassword
	 * @return 
	 * @return boolean
	 * @exception 	
	 * @author WenboLi
	 * @mail WenboLi@ly-sky.com
	 * @date: 2018年8月20日
	 */
	boolean updateUserPassword(String userId, String oldPassword, String newPassword);
}
  